"""
1.通过本周学习Python的内容实现一个自动取款机的存取款模拟效果。
2.要求有登陆和退出、查询余额、取钱，存钱等操作。
3.建议首先初始化一个变量，存储3个以上账号信息，之后的操作都是对这个变量的处理。
"""
# _*_conding:UTF-8_*_
import getpass   # 调用getpass方法可以将用户输入的密码隐藏起来；

# 定义一个包含四个银行账户的列表变量：
User_list = [
    {"Card_id": "B001", "User_name": "李先生", "Money": 100000, "Password": "123456"},
    {"Card_id": "B002", "User_name": "张先生", "Money": 200000, "Password": "ABCDEF"},
    {"Card_id": "B003", "User_name": "王女士", "Money": 300000, "Password": "123ABC"},
    {"Card_id": "B004", "User_name": "赵女士", "Money": 400000, "Password": "456EFG"}
]

# 定义一个登录操作的函数（并对用户输入的密码进行次数限制）
def login():
    global money
    global flag
    global card_id  
    global password 
    S = 2                       #定义一个局部变量设置密码输入错误次数
    for i in User_list:
        if card_id == i["Card_id"]:
            while S:
                if password != i["Password"]:
                    print("密码错误，您还有",S,"次机会")
                    password = getpass.getpass("请重新输入密码：")
                    S -= 1
                else:
                    print("尊敬的"+i['User_name']+":您好，欢迎使用本行ATM取款机\n")
                    money = i["Money"]
                    flag = 1
                    break


# 定义一个查询账户余额的函数
def showMoney():
    global money
    print("此卡当前余额（元）：",money)
    print("")

# 定义一个存钱的函数
def saveMoney():
    global money
    addMoney = int(input("输入存入金额："))
    money += addMoney
    print("... ...")

# 定义一个取款的函数
def drawMoney():
    global money
    addMoney = int(input("输入取款金额："))
    money -= addMoney
    print("正在出钞请稍后... ...")

# 定义一个显示主界面的函数
def show():
    global flag
    login()
    while flag:
        # 输出初始界面：
        print("=" * 7, "XX银行ATM管理系统", "=" * 9)
        print("{0:1}|{1:13}|{2:14}".format(" ", "1.查    询", "2.存    款"))
        print("-"*35)
        print("{0:1}|{1:13}|{2:14}".format(" ", "3.取    款", "4.退    卡"))
        print("="*35)
        key = input("请选择项目：")  # 根据键盘值，判断并执行对应的操作
        if key == "1":
            print("************* 查询余额 *************")
            showMoney()  # 调用showMoney函数
            input("回车键返回主菜单")
        elif key == "2":
            print("************* 存    款 *************")
            saveMoney()  # 调用saveMoney函数
            print("存入成功\n")
            input("回车键返回主菜单")
        elif key == "3":
            print("************* 取    款 *************")
            drawMoney()  # 调用drawMoney函数
            print("请您取走现金\n")
            input("回车键返回主菜单")
        elif key == "4":
            print("************* 请取走您的卡片 *************")
            exit()
        else:
            print("无效的选项,请按照系统提示进行操作")
    else:
        print("对不起，密码错误次数已达到上限，请联系银行处理！！！")
print("您好，欢迎使用本行ATM取款机,输入密码前请确认周边环境安全！！！\n")
card_id = input("请输入银行卡号：")
password = getpass.getpass("请输入密码：")
show()
